package com.bfl.sa.sys.group.mapper;

import com.bfl.sa.common.mapper.BaseMapper;
import com.bfl.sa.sys.group.entity.GroupRelation;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface GroupRelationMapper extends BaseMapper<GroupRelation, Long> {

    GroupRelation findByGroupIdAndUserId(@Param("groupId") Long groupId, @Param("userId") Long userId);

    /**
     * 范围查 如果在指定范围内 就没必要再新增一个 如当前是[10,20] 如果数据库有[9,21] 10<=9 and 21>=20
     */
    GroupRelation findByGroupIdAndStartUserIdLessThanEqualAndEndUserIdGreaterThanEqual(
            @Param("groupId") Long groupId,
            @Param("startUserId") Long startUserId,
            @Param("endUserId") Long endUserId
    );

    /**
     * 删除区间内的数据 因为之前已经有一个区间包含它们了
     */
    void deleteInRange(@Param("startUserId") Long startUserId, @Param("endUserId") Long endUserId);

    GroupRelation findByGroupIdAndOrganizationId(@Param("groupId") Long groupId, @Param("orgId") Long organizationId);

    List<Long> findGroupIdsByUserId(@Param("userId") Long userId);

    List<Long> findGroupIdsByUserIdAndOrgIds(@Param("userId") Long userId, @Param("orgIds") Set<Long> organizationIds);

    /**
     * 无需删除用户 因为用户并不逻辑删除
     */
    void clearDeletedGroupRelation();

}
